]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
loginManager: Move UnlockDialog.isSupported() here
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 4 Mar 2013 18:20:12 +0000 (19:20 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Wed, 6 Mar 2013 15:22:07 +0000 (16:22 +0100)
With fallback mode dropped, we can no longer rely on gnome-screensaver
to be installed, so we'll have cases where we are unable to lock the
screen. The user menu should not show the "Lock" item in this case,
but as UnlockDialog includes UserMenu, we cannot use the existing check
without creating a circular dependency; move the function to a more
generic place to fix.

https://bugzilla.gnome.org/show_bug.cgi?id=693403

js/misc/loginManager.js
js/ui/main.js
js/ui/unlockDialog.js

index 435496c17914f3631f1bc706c25dd87e61274b87..00e269b3b72161e021f059efbc9299eec0d50493 100644 (file)
@@ -75,6 +75,35 @@ function haveSystemd() {
     return GLib.access("/sys/fs/cgroup/systemd", 0) >= 0;
 }
 
+function versionCompare(required, reference) {
+    required = required.split('.');
+    reference = reference.split('.');
+
+    for (let i = 0; i < required.length; i++) {
+        if (required[i] != reference[i])
+            return required[i] < reference[i];
+    }
+
+    return true;
+}
+
+function canLock() {
+    try {
+        let params = GLib.Variant.new('(ss)', ['org.gnome.DisplayManager.Manager', 'Version']);
+        let result = Gio.DBus.system.call_sync('org.gnome.DisplayManager',
+                                               '/org/gnome/DisplayManager/Manager',
+                                               'org.freedesktop.DBus.Properties',
+                                               'Get', params, null,
+                                               Gio.DBusCallFlags.NONE,
+                                               -1, null);
+
+        let version = result.deep_unpack()[0].deep_unpack();
+        return versionCompare('3.5.91', version);
+    } catch(e) {
+        return false;
+    }
+}
+
 let _loginManager = null;
 
 /**
index df40300350614b457294cb78ab4627e75d69fd01..229acc466c2194096258d02bdb3555c82cbb4cda 100644 (file)
@@ -24,6 +24,7 @@ const Panel = imports.ui.panel;
 const Params = imports.misc.params;
 const RunDialog = imports.ui.runDialog;
 const Layout = imports.ui.layout;
+const LoginManager = imports.misc.loginManager;
 const LookingGlass = imports.ui.lookingGlass;
 const NotificationDaemon = imports.ui.notificationDaemon;
 const WindowAttentionHandler = imports.ui.windowAttentionHandler;
@@ -32,7 +33,6 @@ const Scripting = imports.ui.scripting;
 const SessionMode = imports.ui.sessionMode;
 const ShellDBus = imports.ui.shellDBus;
 const ShellMountOperation = imports.ui.shellMountOperation;
-const UnlockDialog = imports.ui.unlockDialog;
 const WindowManager = imports.ui.windowManager;
 const Magnifier = imports.ui.magnifier;
 const XdndHandler = imports.ui.xdndHandler;
@@ -140,7 +140,7 @@ function startSession() {
     overview = new Overview.Overview();
     wm = new WindowManager.WindowManager();
     magnifier = new Magnifier.Magnifier();
-    if (UnlockDialog.isSupported())
+    if (LoginManager.canLock())
         screenShield = new ScreenShield.ScreenShield();
     else
         screenShield = new ScreenShield.ScreenShieldFallback();
index 1296308baa4cadd336b55ecdaea809360fe85f5c..775cab5ed18fd230d58462e6883d041373b771d2 100644 (file)
@@ -27,35 +27,6 @@ const LoginDialog = imports.gdm.loginDialog;
 // The timeout before going back automatically to the lock screen (in seconds)
 const IDLE_TIMEOUT = 2 * 60;
 
-function versionCompare(required, reference) {
-    required = required.split('.');
-    reference = reference.split('.');
-
-    for (let i = 0; i < required.length; i++) {
-        if (required[i] != reference[i])
-            return required[i] < reference[i];
-    }
-
-    return true;
-}
-
-function isSupported() {
-    try {
-        let params = GLib.Variant.new('(ss)', ['org.gnome.DisplayManager.Manager', 'Version']);
-        let result = Gio.DBus.system.call_sync('org.gnome.DisplayManager',
-                                               '/org/gnome/DisplayManager/Manager',
-                                               'org.freedesktop.DBus.Properties',
-                                               'Get', params, null,
-                                               Gio.DBusCallFlags.NONE,
-                                               -1, null);
-
-        let version = result.deep_unpack()[0].deep_unpack();
-        return versionCompare('3.5.91', version);
-    } catch(e) {
-        return false;
-    }
-}
-
 const UnlockDialog = new Lang.Class({
     Name: 'UnlockDialog',
     Extends: ModalDialog.ModalDialog,